package cn.iocoder.yudao.module.paymember.service.copying;

import cn.iocoder.yudao.framework.common.enums.YesOrNoEnum;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.paymember.controller.app.copying.vo.XhsCopyingRespVO;
import cn.iocoder.yudao.module.system.controller.admin.copying.vo.CopyingRespVO;
import cn.iocoder.yudao.module.system.dal.dataobject.copying.CopyingDO;
import cn.iocoder.yudao.module.system.dal.mysql.copying.CopyingMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;

import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.COPYING_NOT_EXISTS;

/**
 * 文案 Service 实现类
 *
 * @author 芋道源码
 */
@Service
@Validated
public class PaymemberCopyingServiceImpl implements PaymemberCopyingService {

    @Value("${yudao.copying.id}")
    private Long copyingId;

    @Resource
    private CopyingMapper copyingMapper;
    @Resource
    private MemberUserService memberUserService;

    private void validateCopyingExists(Long id) {
        if (copyingMapper.selectById(id) == null) {
            throw exception(COPYING_NOT_EXISTS);
        }
    }

    @Override
    public CopyingRespVO getCopyingInfo(Long userId) {
//        return copyingMapper.selectById(copyingId);
        LambdaQueryWrapper<CopyingDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(CopyingDO::getUsed, YesOrNoEnum.YES.getCode());
        CopyingDO copying = copyingMapper.selectOne(lambdaQueryWrapper);
        CopyingRespVO copyingRespVO = BeanUtils.toBean(copying, CopyingRespVO.class);

        MemberUserDO memberUserDO = memberUserService.getUser(userId);
        copyingRespVO.setContent(String.format(copyingRespVO.getContent(),
                memberUserDO.getInviteCode(),
                memberUserService.getInviteLink(memberUserDO.getInviteCode())
        ));

        return copyingRespVO;
    }

    @Override
    public XhsCopyingRespVO getXhsCopyingInfo(Long userId) {
        XhsCopyingRespVO xhsCopyingRespVO = new XhsCopyingRespVO();
        String copying = "不会真的有人死磕秋招测评笔试吧！这些题真的有必要吗？\uD83E\uDD2F\n" +
                "\n" +
                "凌晨三点，我对着屏幕上的测评发呆，第N次怀疑人生——这行测题跟我应聘的岗位有半毛钱关系啊？！\uD83D\uDC38 一天赶三场笔试，从智鼎的逻辑迷宫跳到赛码的编程坑，再被牛客的资料分析按头算到吐，感觉脑袋里像塞了一团乱麻，晕得直想躺平…\n" +
                "\n" +
                "说真的，这些题库出的题是不是有点太离谱了？\uD83D\uDE13 北S的图形推理能绕到你怀疑视力，智鼎的性格测试多到能刷完一部剧，赛码的编程题偏得像故意刁难，易考的数字运算算到我怀疑自己小学没毕业… 关键是刷了三天三夜，感觉除了视力下降，啥岗位相关的能力也没练出来啊！\n" +
                "\n" +
                "最崩溃的是一天赶三场笔试，上午互联网行测看到眼花，下午国央企综合知识背到嘴瓢，晚上银行测评算到手指抽筋，结束时连自己姓啥都快忘了… 对着镜子看黑眼圈，像被按在地上打了三拳\uD83D\uDC4A\n" +
                "\n" +
                "直到发现offerbiye能直接截图秒出答案，甚至支持AI自动答题、AI自动笔试，我才悟了——别硬扛了！\uD83D\uDCF8 北S的图形题截过去，3秒给规律；智鼎的逻辑题拍一下，思路顺着屏幕爬出来；赛码编程题更绝，AI自动生成带注释的代码，连步骤都不用自己理… 昨天赶两场笔试，靠它AI自动笔试功能直接轻松通关，居然提前半小时就搞定，还能腾出手泡杯热牛奶\uD83E\uDD5B\n" +
                "\n" +
                "真不是想走捷径，只是觉得这些脱离岗位的“题海战术”太磨人了… 用它的AI自动答题刷了一周，笔试通过率涨了不说，终于不用熬夜到脑壳疼，现在睡前还能刷会儿剧呢~\n" +
                "\n" +
                "邀请码【%s】给同病相怜的宝子，注册送200积分，省点力气冲面试不香吗？毕竟能靠AI自动笔试躺着过，谁想站着硬扛啊\uD83D\uDE0C\n" +
                "\n" +
                "#秋招笔试吐槽 #offerbiye #北森智鼎 #赛码牛客 #笔试神器 #AI自动答题 #AI自动笔试";

        MemberUserDO memberUserDO = memberUserService.getUser(userId);

        xhsCopyingRespVO.setCopying(String.format(copying, memberUserDO.getInviteCode()));

        return xhsCopyingRespVO;
    }

}